// 格式化
package formats

import (
	"fmt"
	"go/ast"
	"go/token"
	"regexp"
)

// P 打印格式化方法
func P(o interface{}) {
	fmt.Printf("\n")
	token := token.NewFileSet()
	ast.Print(token, o)
	fmt.Printf("\n")
}

// IsMobile 判断是否手机号
func IsMobile(s string) bool {
	rule := "^1[345789]{1}\\d{9}$"
	r := regexp.MustCompile(rule)
	return r.MatchString(s)
}

// FormatMobile 格式化手机号加星号*
func FormatMobile(s string) string {
	l := len(s)
	if l == 0 {
		return ""
	}
	if l < 3 {
		return s[0:1] + "****"
	}
	if l <= 7 {
		return s[0:3] + "****"
	} else {
		return s[0:3] + "****" + s[l-4:l]
	}
}

// IsEmail 验证邮箱
func IsEmail(s string) bool {
	rule := "^([a-zA-Z]|[0-9])(\\w|\\-)+@[a-zA-Z0-9_-]+\\.([a-zA-Z]{2,4})$"
	r := regexp.MustCompile(rule)
	return r.MatchString(s)
}

// IsUrl 验证是否是URL
func IsUrl(s string) bool {
	rule := "^http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?"
	r := regexp.MustCompile(rule)
	return r.MatchString(s)
}
